Memory Management

The vm_allocate Mach system call is replaced by the LibMOM functions mom_allocate_memory and mom_allocate_address. However, these functions only allow for allocating memory in the current task, whereas Mach's vm_allocate allows tasks to allocate memory into the address space of another task. Unfortunately, HURD does use this feature of Mach and there is no defined LibMOM function to transfer memory from one task to another. It is not used frequently, of the 98 calls to vm_allocate, only 15 do not refer to the invoking task. For example, the exec server allocates memory to the task that it is starting using vm_allocate.

If a microkernel has external memory managers, then it must be possible for one task to give memory to another task. However, the precise procedure for this is likely to vary from kernel to kernel, so I would propose that a new call is required for LibMOM.

Some of the current LibMOM calls are actually common combinations of other calls. Whether a combined call is required that allocates memory to a different task is a question that could only be answered by profiling a system that did not have it and comparing it to one that does.